package com.ea.service;

import com.ea.domain.dto.OrderCreateDTO;
import com.ea.domain.dto.PayBackInfo;
import com.ea.domain.dto.TotalSaleDTO;
import com.ea.domain.entity.OrderFormDetail;
import com.ea.domain.query.OrderInfoQueryDTO;
import com.ea.domain.query.TotalSaleQuery;
import com.ea.domain.vo.OrderCreateVO;
import com.ea.domain.vo.OrderInfoVO;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author NAME-L
 * @Description TODO
 * @className IOrderInfoService
 * @date 2023-01-04 22:05:46
 */
public interface IOrderInfoService {
    /**
     * 列表查询个人订单信息
     *
     * @param queryDTO queryDTO
     * @return pageInfo
     */
    PageInfo<OrderInfoVO> listUserOrderInfo(OrderInfoQueryDTO queryDTO);

    /**
     * 创建订单
     */
    OrderCreateVO createOrder(OrderCreateDTO createDTO);

    /**
     * 确认发货单（未送达的确认前需要提示）
     *
     * @param orderId orderId
     */
    void confirmOrder(Long orderId);


    /**
     * 申请售后
     *
     * @param orderId orderId
     */
    void applyAfterSale(Long orderId);

    /**
     * 过期未支付的订单取消
     *
     * @param orderId orderId
     */
    void cancelOrderFromNoPay(Long orderId);

    /**
     * 订单支付
     *
     * @param orderId
     */
    void payOrder(Long orderId);

    /**
     * 查询订单明细信息
     *
     * @param orderId
     * @return
     */
    List<OrderFormDetail> listOrderDetail(Long orderId);

    /**
     * 客户修改备注
     * @param orderId
     * @param buyerMemo
     */
    void updateOrderInfo(Long orderId, String buyerMemo);

    /**
     * 查询订单创建信息
     * @param orderId
     * @return
     */
    PayBackInfo getPayBackInfo(Long orderId);

    /**
     * 根据时间查询销售额
     * @param query
     * @return
     */
    List<TotalSaleDTO> selectTotalPriceByTime(TotalSaleQuery query);
}
